#ifndef VBO_H
#define VBO_H

#include "graphicElement.h"

class Vbo
{
public:
    Vbo();
    InitBuffers();

    GLuint vertexBuffer;    /*!<	Indice du buffer contenant les informations sur les sommets	*/
    GLuint colorBuffer;     /*!<	Indice du buffer utilisé pour stocker les informations de couleurs des sommets	*/
    GLuint indexBuffer;     /*!<	Indice du buffer contenant les informations sur l'indice du sommet à afficher	*/
    GLuint normalBuffer;    /*!<	Indice du buffer utilisé pour stocker les informations concernant les normales des sommets	*/
    GLuint textureBuffer;   /*!<	Indice du buffer utilisé pour stocker les informations concernant les indices de texture des sommets */
    GLuint pickingBuffer;   /*!<    Indice du buffer utilisé pour stocker les informations concernant les couleurs du deuxieme affichage */

    unsigned int vertexCount;   /*!<    Nombre de vertex dans le buffer */

    int dimensionVertex;    /*!<	Nombre de coordoonnées utilisés pour représenter un sommet (compris en 1 et 4)	*/
    int dimensionColors;    /*!<	Nombre de canaux utilisés pour représenter la couleur (entre 1 et 4)	*/
    int dimensionTexture;   /*!<	Nombre dimension utilisés pour représenter la texture (entre 1 et 3)	*/

    unsigned char colorxp;
    unsigned char coloryp;
    unsigned char colorzp;

    /*!
     * 	\fn int SetVertex(int indiceVertex, Vectorf coordinates)
     * 	\brief Méthode permettant de modifier le contenu du buffer
     *
     * 	\param int indiceVertex : Indice du sommet à modifier
     * 	\param Vectorf coordinates : nouvelle coordoonées du sommet
     */

    int SetVertex(int indiceVertex, Vectorf coordinates);

    /*!
     * 	\fn Vectorf GetVertex(int indiceVertex)
     * 	\brief Méthode permettant récupérer les coordonnées d'un sommet
     *
     * 	\param int indiceVertex : Indice du sommet à récupérer
     */

    Vectorf GetVertex(int indiceVertex);


};

#endif // VBO_H
